package com.lrkj.payfee.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.lrkj.common.annotation.Excel;
import com.lrkj.common.core.domain.BaseEntity;
import com.lrkj.payfee.domain.vo.FeeCondition;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 房屋收费标准对象 tb_room_norm
 *
 * @author yajun_ren
 * @date 2021-07-29
 */
@Data
public class RoomNorm extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private String roomNormId;

    /** 费用类型 */
    @Excel(name = "费用类型")
    private String projectId;

    /** 收费项目 */
    @Excel(name = "收费项目")
    private String chargeId;

    /** 收费标准 */
    @Excel(name = "收费标准")
    private String normId;

    /** 部门ID */
    @Excel(name = "部门ID")
    private String deptId;

    /** 小区ID */
    @Excel(name = "小区ID")
    private String communityId;

    /** 楼栋ID */
    @Excel(name = "楼栋ID")
    private String floorId;

    /** 单元ID */
    @Excel(name = "单元ID")
    private String unitId;

    /** 房屋id */
    @Excel(name = "房屋id")
    private String roomId;


    /** 指定金额 */
    @Excel(name = "指定金额")
    private BigDecimal amountSpecified;

    /** 违约金计算方式 */
    @Excel(name = "违约金计算方式")
    private String penaltyType;

    /** 开始收费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    @Excel(name = "开始收费时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date beginChargeTime;

    /** 结束收费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    @Excel(name = "结束收费时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date finishChargetime;


    /** 下一次计费开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date nextBeginChargeTime;

    /** 下一次计费结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date nextFinishChargetime;

    /***第一次费用生成结束日期***/
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date firstFinishTime;

    //应收日期
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date receivableTime;

    /** 状态 */
    private String state;

    /** 祖级列表 */
    private String ancestors;

    //费用标准参数
    private FeeCondition feeCondition;

    private String deptName;

    private String communityName;

    private String roomName;

    //小区编号
    private String communityNum;

    // 10001|收费中 10002|收费结束 （选择结束时间,并且最后一条费用  不满一个月）
    private String status;

    /** 使用面积 */
    private BigDecimal roomArea;

    //建筑面积
    private BigDecimal buildArea;

    //业主ID
    private String ownerId;

    //交讫年月
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date deliveryTime;

    //缴费截止月
    private String paymentCycle;

    //仪表种类ID
    private String kindId;

    //仪表种类名称
    private String kindName;

    //单价
    private BigDecimal prices;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("roomNormId", getRoomNormId())
            .append("projectId", getProjectId())
            .append("chargeId", getChargeId())
            .append("normId", getNormId())
            .append("deptId", getDeptId())
            .append("communityId", getCommunityId())
            .append("floorId", getFloorId())
            .append("unitId", getUnitId())
            .append("roomId", getRoomId())
            .append("beginChargeTime", getBeginChargeTime())
            .append("finishChargetime", getFinishChargetime())
            .append("amountSpecified", getAmountSpecified())
            .append("penaltyType", getPenaltyType())
            .append("state", getState())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("ancestors", getAncestors())
            .toString();
    }
}
